package com.jlnx.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.jlnx.pojo.ChainEnterprise;
import com.jlnx.pojo.Enterprise;
import com.jlnx.util.DBUtils;

public class ChainEnterpriseDaoImpl {

	//插入链条企业信息
	public int insertChainEnterprise(ChainEnterprise chainEnterprise) {
		//定义相关对象
		Connection conn = null;
		PreparedStatement pstm=null;
		//链接数据库
		conn = DBUtils.getConnection();
		//编写SQL语句
		String sql="insert into chainent values(?,?,?,?,?,?,?,?,?,?,?)";
		//获得执行SQL语句对象
		try {
			pstm=conn.prepareStatement(sql);
			//给占位符赋值
			pstm.setString(1, chainEnterprise.getEntNo());
			pstm.setString(2, chainEnterprise.getName());
			pstm.setString(3, chainEnterprise.getEntCodeCredit());
			pstm.setString(4, chainEnterprise.getPhoneNo());
			pstm.setBigDecimal(5, chainEnterprise.getLimit());
			pstm.setBigDecimal(6, chainEnterprise.getCreditLimit());
			pstm.setBigDecimal(7, chainEnterprise.getRemainLimit());
			pstm.setInt(8, chainEnterprise.getStatus());
			pstm.setBigDecimal(9, chainEnterprise.getProperty());
			pstm.setBigDecimal(10, chainEnterprise.getSales());
			pstm.setInt(11, chainEnterprise.getInstatus());			
			//执行SQL语句，并返回结果
			int i = pstm.executeUpdate();
			return i;
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			//关闭连接，释放结果（正序创建，逆序销毁）
			try {
				pstm.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	
		return -1;
	}
	

	/**
	  * 获取待审核的全部链条企业信息
	  */
	 public List<ChainEnterprise> selectChainEnterpriseByInstatus(int instatus){
		 
		    //定义相关对象
			Connection conn = null;
			PreparedStatement pstm=null;
			ResultSet rs = null;
			//链接数据库
			conn = DBUtils.getConnection();
			//编写SQL语句
			String sql="select * from chainent where instatus = ?";
			//获得执行SQL语句对象
			try {
				pstm=conn.prepareStatement(sql);
				pstm.setInt(1, instatus);
				//执行SQL语句，并返回结果
				rs=pstm.executeQuery();
				List<ChainEnterprise> list = new ArrayList<ChainEnterprise>();
				while(rs.next()) {
					ChainEnterprise chainEnterprise = new ChainEnterprise(rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getBigDecimal(5),rs.getBigDecimal(6), rs.getBigDecimal(7),rs.getInt(8),rs.getBigDecimal(9),rs.getBigDecimal(10),rs.getInt(11));
					list.add(chainEnterprise);
				}
				return list;
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		 
		return null;
		
		 
	 }
	
	
// 
//     /**
//	 * 更改密码
//	 */
// public int changeEmpPassByENum(int eNum,String ePass) {
//		//定义相关对象
//		Connection conn = null;
//		PreparedStatement pstm=null;
//		//链接数据库
//		conn = DBUtils.getConnection();
//		//编写SQL语句
//		String sql="update emp set epass=? where empno=?";
//		//获得执行SQL语句对象
//		try {
//			pstm=conn.prepareStatement(sql);
//			//给占位符赋值
//			pstm.setString(1, ePass);
//			pstm.setInt(2, eNum);
//			//执行SQL语句，并返回结果
//			int i = pstm.executeUpdate();
//			return i;
//			
//		} catch (SQLException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		} finally {
//			//关闭连接，释放结果（正序创建，逆序销毁）
//			try {
//				pstm.close();
//				conn.close();
//			} catch (SQLException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//		}
//	
//		return 0;
//		
//	}
// 
 /**
  * 全查询
  */
 public List<ChainEnterprise> selectChainEnterpriseList(){
	 
	    //定义相关对象
		Connection conn = null;
		PreparedStatement pstm=null;
		ResultSet rs = null;
		//链接数据库
		conn = DBUtils.getConnection();
		//编写SQL语句
		String sql="select * from chainent";
		//获得执行SQL语句对象
		try {
			pstm=conn.prepareStatement(sql);
			//执行SQL语句，并返回结果
			rs=pstm.executeQuery();
			List<ChainEnterprise> list = new ArrayList<ChainEnterprise>();
			while(rs.next()) {
				ChainEnterprise chainEnterprise = new ChainEnterprise(rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getBigDecimal(5),rs.getBigDecimal(6), rs.getBigDecimal(7),rs.getInt(8),rs.getBigDecimal(9),rs.getBigDecimal(10),rs.getInt(11));
				list.add(chainEnterprise);
			}
			return list;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	 
	return null;
	
	 
 }
 
 /**
	 *单查询:由登录账号获取链条企业信息
	 */
	public ChainEnterprise selectByEntNo(String entNo) {
		
        //定义相关对象
		Connection conn = null;
		PreparedStatement pstm=null;
		ResultSet rs = null;
		//链接数据库
		conn = DBUtils.getConnection();
		//编写SQL语句
		String sql="select * from chainent where entNo = ?";
		//获得执行SQL语句对象
		try {
			pstm=conn.prepareStatement(sql);
			//给占位符赋值
			pstm.setString(1, entNo);
			//执行SQL语句，并返回结果
			rs=pstm.executeQuery();
			ChainEnterprise chainEnterprise = null;
			while(rs.next()) {
				chainEnterprise = new ChainEnterprise(rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getBigDecimal(5),rs.getBigDecimal(6), rs.getBigDecimal(7),rs.getInt(8),rs.getBigDecimal(9),rs.getBigDecimal(10),rs.getInt(11));
			}
			return chainEnterprise;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			//关闭连接，释放结果（正序创建，逆序销毁）
			try {
				rs.close();
				pstm.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return null;
		
	}
	
    /**
     * 修改链条企业的信息
     */
    public int updateChainEntMessage(ChainEnterprise chainEnterprise) {
		//定义相关对象
		Connection conn = null;
		PreparedStatement pstm=null;
		//链接数据库
		conn = DBUtils.getConnection();
		//编写SQL语句
		String sql="update chainent set entNo=?,name=?,entCodeCredit=?,phoneNo=?,`limit`=?,creditLimit=?,remainLimit=?,status=?,property=?,sales=?,instatus=? where entNo=?";
		//获得执行SQL语句对象 
		try {
			pstm=conn.prepareStatement(sql);
			//给占位符赋值
			pstm.setString(1, chainEnterprise.getEntNo());
			pstm.setString(2, chainEnterprise.getName());
			pstm.setString(3, chainEnterprise.getEntCodeCredit());
			pstm.setString(4, chainEnterprise.getPhoneNo());
			pstm.setBigDecimal(5, chainEnterprise.getLimit());
			pstm.setBigDecimal(6, chainEnterprise.getCreditLimit());
			pstm.setBigDecimal(7, chainEnterprise.getRemainLimit());
			pstm.setInt(8, chainEnterprise.getStatus());
			pstm.setBigDecimal(9, chainEnterprise.getProperty());
			pstm.setBigDecimal(10, chainEnterprise.getSales());
			pstm.setInt(11, chainEnterprise.getInstatus());	
			pstm.setString(12, chainEnterprise.getEntNo());	
			//执行SQL语句，并返回结果
			int i = pstm.executeUpdate();
			return i;
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			//关闭连接，释放结果（正序创建，逆序销毁）
			try {
				pstm.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	
		return -1;
		
	}
	
    /**
     * 对链条企业进行准入或拒绝，并设置初始限额、授信额度、和限制额度为0：准入状态：0.未准入，1.待审核，2.已准入
     */
    public int changeInstatus(String entNo,int instatus) {
		//定义相关对象
		Connection conn = null;
		PreparedStatement pstm=null;
		//链接数据库
		conn = DBUtils.getConnection();
		//编写SQL语句
		String sql = "";
		if(instatus == 0) {//置为未准入，不必初始化限额
		    sql="update chainent set instatus=? where entNo=?";
		}else if(instatus == 2){//置为准入，初始化限额
			sql="update chainent set instatus=?,`limit`='0',creditLimit='0',remainLimit='0' where entNo=?";
		}
		//获得执行SQL语句对象 
		try {
			pstm=conn.prepareStatement(sql);
			//给占位符赋值
			pstm.setInt(1, instatus);
			pstm.setString(2, entNo);
			//执行SQL语句，并返回结果
			int i = pstm.executeUpdate();
			return i;
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			//关闭连接，释放结果（正序创建，逆序销毁）
			try {
				pstm.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	
		return -1;
		
	}
    
    /**
     * 对链条企业进行状态修改：0良好1不良
     */
    public int changeStatus(String entNo,int status) {
		//定义相关对象
		Connection conn = null;
		PreparedStatement pstm=null;
		//链接数据库
		conn = DBUtils.getConnection();
		//编写SQL语句
		String sql = "update chainent set status=? where entNo=?";
		//获得执行SQL语句对象 
		try {
			pstm=conn.prepareStatement(sql);
			//给占位符赋值
			pstm.setInt(1, status);
			pstm.setString(2, entNo);
			//执行SQL语句，并返回结果
			int i = pstm.executeUpdate();
			return i;
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			//关闭连接，释放结果（正序创建，逆序销毁）
			try {
				pstm.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	
		return -1;
		
	}
 

//    
//    /**
//     * 修改员工信息
//     */
//    public int changeEmpByENum(int eNum,String eName,String ePass,int eSex,Date eBirth,String eIdNum,int deptNum,int jobNum,int eType,int eSource ) {
//		//定义相关对象
//		Connection conn = null;
//		PreparedStatement pstm=null;
//		//链接数据库
//		conn = DBUtils.getConnection();
//		//编写SQL语句
//		String sql="update emp set ename=?,epass=?,esex=?,ebirth=?,eidnum=?,deptno=?,jobno=?,etype=?,esource=? where empno=?";
//		//获得执行SQL语句对象 
//		try {
//			pstm=conn.prepareStatement(sql);
//			//给占位符赋值
//			pstm.setString(1, eName);
//			pstm.setString(2, ePass);
//			pstm.setInt(3, eSex);
//			pstm.setDate(4, eBirth);
//			pstm.setString(5, eIdNum);
//			pstm.setInt(6, deptNum);
//			pstm.setInt(7, jobNum);
//			pstm.setInt(8, eType);
//			pstm.setInt(9, eSource);
//			pstm.setInt(10, eNum);
//			//执行SQL语句，并返回结果
//			int i = pstm.executeUpdate();
//			return i;
//			
//		} catch (SQLException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		} finally {
//			//关闭连接，释放结果（正序创建，逆序销毁）
//			try {
//				pstm.close();
//				conn.close();
//			} catch (SQLException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//		}
//	
//		return 0;
//		
//	}
//
//    /** 
//     * @param empName
//     * @param empSex
//     * @param empBirth
//     * @param empIdNum
//     * @return
//     */
//	public int changeEmpMsgByENum(int eNum, String eName, int eSex, Date eBirth, String eIdNum) {
//		//定义相关对象
//				Connection conn = null;
//				PreparedStatement pstm=null;
//				//链接数据库
//				conn = DBUtils.getConnection();
//				//编写SQL语句
//				String sql="update emp set ename=?,esex=?,ebirth=?,eidnum=? where empno=?";
//				//获得执行SQL语句对象 
//				try {
//					pstm=conn.prepareStatement(sql);
//					//给占位符赋值
//					pstm.setString(1, eName);
//					pstm.setInt(2, eSex);
//					pstm.setDate(3, eBirth);
//					pstm.setString(4, eIdNum);
//					pstm.setInt(5, eNum);
//					//执行SQL语句，并返回结果
//					int i = pstm.executeUpdate();
//					return i;
//					
//				} catch (SQLException e) {
//					// TODO Auto-generated catch block
//					e.printStackTrace();
//				} finally {
//					//关闭连接，释放结果（正序创建，逆序销毁）
//					try {
//						pstm.close();
//						conn.close();
//					} catch (SQLException e) {
//						// TODO Auto-generated catch block
//						e.printStackTrace();
//					}
//				}
//			
//				return 0;
//	}
    
}
